**************************************************************
** title:	An extraordinary election?	(...)		 		**
** data:	replication_dataset_FP_Daoust_Jabbour.dta		**
** authors:	Daoust and Jabbour								**
** date:	January 2020									**
**************************************************************


use "replication_dataset_FP_Daoust_Jabbour.dta", clear

					*********************************
					*     		Preparations	 	*
					*********************************
					
					
	set more off
	numlabel, add
	set scheme plotplain
					

* Age 0-1
	
	clonevar age_rscale = age
	replace age_rscale = (age_rscale - 18) / (96 - 18)
		
* Age2
	
	g age_rscale_sq = age_rscale^2


*Labels

	label value age_rscale AGE 

	label value age_rscale_sq AgGE2 

	label define party 1"PLQ" 2"PQ" 3"ADQ/CAQ" 4"QS" 
	label value party party

	label define PARTIES 1"PLQ" 2"PQ" 3"ADQ/CAQ" 4"QS"
	label value partyid PARTIES

	label value vote PARTIES

	label define LANGUE 0"Non-Franco" 1"Franco"
	label value francais LANGUE

	label define SEX 0"Man" 1"Woman"
	label value gender SEX

	label define OUI 0"NON" 1"OUI"
	label value referendum OUI

	label define EDUCATION 1"No education to high school completed" 2"Post-secondary but university not completed" 3"University completed"
	label value education EDUCATION

	label define GENERATION 1"Millenial" 2"X" 3"Baby boomers" 4"Silent"
	label value generation GENERATION

	label define ELECTIONS 1"2007" 2"2008" 3"2012" 4"2014" 5"2018"
	label value election ELECTIONS

	label define PARTYID 0"No PID" 1"PLQ" 2"PQ" 3"ADQ/CAQ" 4"QS"
	label value partyid PARTYID

	label variable generation "Generations"
	label variable gender "Sex (Woman)"
	label variable education "Education"
	label variable election "Election"
	label variable referendum "OUI"
	label variable partyid "Party ID"

*Recode education as linear
	gen edu_linear=0 if education==1
	replace edu_linear=0.5 if education==2
	replace edu_linear=1 if education==3

*Dummy vote YES to independence
	gen OUI=0 if referendum==0
	replace OUI=1 if referendum==2
		 
*Party ID

	gen lib_pid=0
	replace lib_pid=1 if partyid==1
	gen pq_pid=0
	replace pq_pid=1 if partyid==2
	gen caq_pid=0
	replace caq_pid=1 if partyid==3
	gen qs_pid=0
	replace qs_pid=1 if partyid==4
	
	* Generation 

	* generation

	gen eligible_generation = .
	replace eligible_generation=1 if age<=19 & age<=26 & year==2007
	replace eligible_generation=1 if age<=20 & age<=27 & year==2008
	replace eligible_generation=1 if age<=24 & age<=31 & year==2012
	replace eligible_generation=1 if age<=26 & age<=33 & year==2014
	replace eligible_generation=1 if age<=30 & age<=37 & year==2018

	replace eligible_generation=2 if age>=27 & age<=42 & year==2007
	replace eligible_generation=2 if age>=28 & age <=43 & year==2008
	replace eligible_generation=2 if age>=32 & age <=47 & year==2012
	replace eligible_generation=2 if age>=34 & age <=49 & year==2014
	replace eligible_generation=2 if age>=38 & age <=53 & year==2018

	replace eligible_generation=3 if age>=43 & age<=61 & year==2007 
	replace eligible_generation=3 if age>=44 & age <=62 & year==2008
	replace eligible_generation=3 if age>=48 & age <=66 & year==2012
	replace eligible_generation=3 if age>=50 & age <=68 & year==2014
	replace eligible_generation=3 if age>=54 & age <=72 & year==2018

	replace eligible_generation=4 if age>= 62 & year==2007 
	replace eligible_generation=4 if age>= 63 & year==2008
	replace eligible_generation=4 if age>= 67 & year==2012
	replace eligible_generation=4 if age>= 69 & year==2014
	replace eligible_generation=4 if age>= 73 & year==2018
	
	* generation Dufresnes 
	* Millennials : Born 1981-1995 
	* X : Born 1966-1980
	* Boomers : Born “end of the 1940s to 1965” (1946-1965)
	* Silent : n/a
	
	g generation_Dufresnes = .
	replace generation_Dufresnes=1 if age<=19 & age<=26 & year==2007
	replace generation_Dufresnes=1 if age<=20 & age<=27 & year==2008
	replace generation_Dufresnes=1 if age<=24 & age<=31 & year==2012
	replace generation_Dufresnes=1 if age<=26 & age<=33 & year==2014
	replace generation_Dufresnes=1 if age<=30 & age<=37 & year==2018
	
	replace generation_Dufresnes=2 if age>=27 & age<=41 & year==2007
	replace generation_Dufresnes=2 if age>=28 & age <=42 & year==2008
	replace generation_Dufresnes=2 if age>=32 & age <=46 & year==2012
	replace generation_Dufresnes=2 if age>=34 & age <=48 & year==2014
	replace generation_Dufresnes=2 if age>=38 & age <=52 & year==2018
	
	replace generation_Dufresnes=3 if age>=42 & age<=61 & year==2007 
	replace generation_Dufresnes=3 if age>=43 & age <=62 & year==2008
	replace generation_Dufresnes=3 if age>=47 & age <=66 & year==2012
	replace generation_Dufresnes=3 if age>=49 & age <=68 & year==2014
	replace generation_Dufresnes=3 if age>=53 & age <=72 & year==2018
	
	replace generation_Dufresnes=4 if age>= 62 & year==2007 
	replace generation_Dufresnes=4 if age>= 63 & year==2008
	replace generation_Dufresnes=4 if age>= 67 & year==2012
	replace generation_Dufresnes=4 if age>= 69 & year==2014
	replace generation_Dufresnes=4 if age>= 73 & year==2018

*Clean 
	drop if missing(vote, gender, edu_linear, francais, partyid, OUI, age_rscale, age_rscale_sq, eligible_generation, generation_Dufresnes)

		            *********************************
					*    Descriptive statistics  	*
					*			TABLE 1				*
					*********************************

* without weight
					
	eststo clear

	sort election 

	by election: eststo: quietly estpost sum gender edu_linear ///
				francais OUI partyid PLQ PQ ADQ_CAQ QS  //Note: party id needs to be manually
				
	esttab using "Descriptives_Qc.rtf", cells("min mean(fmt(3)) sd(fmt(3)) max count")  label   mlabels(,titles) replace

	eststo clear

* with weight
	
	eststo clear

	sort election 

	by election: eststo: quietly estpost sum gender ///
			edu_linear francais OUI partyid PLQ PQ ADQ_CAQ QS ///
					[aweight=weight_vote] //Note: party id needs to be manually
				
	esttab using "Descriptives_Qc_pond.tex", cells("mean(fmt(2)) ")  label  mlabels(,titles) replace

	eststo clear

**Figure 2 

	gen vote_corr = Voteshare_survey*weight_vote

	foreach i in "2007" "2008" "2012" "2014" "2018" {

	graph bar vote_share Voteshare_survey if election_string=="`i'", legend(off) over(party)  ///
	 saving(sondage_effectif_`i'.gph, replace) title(`i')
	}

	graph combine sondage_effectif_2007.gph sondage_effectif_2008.gph sondage_effectif_2012.gph ///
	sondage_effectif_2014.gph sondage_effectif_2018.gph, ///
	title("Vote choice (2007-2018)" "Surveys (light grey), Election results (dark grey)") row(2) saving(survey_reality.png, replace)
		
		* Note latex : light grey = SRV; grey = Election results
		

*Bivariate correlations

	corr generation gender edu_linear francais OUI partyid	
		
		
		
					*********************************
					*     Regressions and Figures 	*
					*********************************	
					
					
					******* BLOC 1 ****** 
					
					
* Sex

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib0.gender age_rscale age_rscale_sq edu_linear francais, robust base(1)

	foreach i in 1 2 3 4    {

	margins, dydx(gender) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	marginsplot, yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			 xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(0.2(0.1)-0.2) saving(sex_`i'.gph, replace)	
			 
		 }  

	graph combine sex_1.gph sex_2.gph sex_3.gph sex_4.gph, ///
			  saving(SEXen.png, replace)
			 
		graph export SEXen.png,width(3200)  height(2400)  replace 
		
* Generation dufrenes 

	* baseline : boomers 
	
	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib3.generation_Dufresnes gender edu_linear francais, robust base(1)


	foreach i in 1 2 3 4    {

		
	margins, dydx(generation_Dufresnes) at(election=(1(1)5)) predict(outcome(`i')) mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election")  ylabel(-0.6(0.1)0.6)  legend(off) saving(generation_`i'.gph, replace) 	
			 
		 }  

	graph combine generation_1.gph generation_2.gph generation_3.gph generation_4.gph, ///
			saving(GENERATION.png, replace)
			 
	graph export GENERATION.png,width(3200)  height(2400)  replace
	
	* Note : Baseline : Boomers. Circle: Milennials. Square: X. Diamond: Silent.

* Age 

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##c.age_rscale gender age_rscale_sq edu_linear francais, robust base(1)


	foreach i in 1 2 3 4    {

		
	margins, dydx(age_rscale) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election")  ylabel(-0.8(0.2)0.8) legend(off) saving(age_rscale_`i'.gph, replace) 	
			 
		 }  

	graph combine age_rscale_1.gph age_rscale_2.gph age_rscale_3.gph age_rscale_4.gph, ///
			saving(AGEen.png, replace)
			 
	graph export AGEen.png,width(3200)  height(2400)  replace

* Education		

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##c.edu_linear age_rscale gender age_rscale_sq francais, robust base(1)


	foreach i in 1 2 3 4    {

		
	margins, dydx(edu_linear) at(election=(1(1)5)) predict(outcome(`i')) mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(-0.4(0.1)0.4) legend(off) saving(education`i'.gph, replace) 
			 
		 }  

	graph combine education1.gph education2.gph education3.gph education4.gph , ///
			saving(EDUCATIONen.png, replace)
			 
		graph export EDUCATIONen.png,width(3200)  height(2400)  replace
		
					
* French 					
					
	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib0.francais edu_linear age_rscale gender age_rscale_sq, robust base(1)

	foreach i in 1 2 3 4    {

		
	margins, dydx(francais) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	marginsplot, yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(-0.6(0.1)0.6) legend(off) saving(francais_`i'.gph, replace)	
			 
		 }  

	graph combine francais_1.gph francais_2.gph francais_3.gph francais_4.gph , ///
			 saving(FRENCHen.png, replace)
			 
	graph export FRENCHen.png,width(3200)  height(2400)  replace
		
		
		
		
		******* BLOC 2 ****** 
		
		
		
*Independence

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##i.OUI gender edu_linear age_rscale age_rscale_sq francais partyid, robust base(1)

	foreach i in 1 2 3 4    {
		
	margins, dydx(OUI) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	marginsplot, yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(-0.8(0.2)0.8) legend(off) saving(ref_`i'.gph, replace)	
			 
		 }  

	graph combine ref_1.gph ref_2.gph ref_3.gph ref_4.gph, ///
		saving(sovereignty.png, replace)
			 
	graph export sovereignty.png, width(3200)  height(2400)  replace


*Party ID

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib0.partyid gender edu_linear age_rscale age_rscale_sq francais OUI, base(1) iter(20)

	foreach i in 1 2 3 4    {
		
	margins, dydx(partyid) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") legend(off) ///
			xtitle("Election") ylabel(-0.8(0.2)0.8)  saving(pid_`i'.gph, replace)	
			 
		 }  

	graph combine pid_1.gph pid_2.gph pid_3.gph pid_4.gph, ///
			saving(pid.png, replace)
			 
	graph export pid.png, width(3200)  height(2400)  replace


	
	
					*********************************
					*     		APPENDIX		 	*
					*********************************	

*Table A1
eststo clear

mlogit vote b1.election##ib0.gender, robust base(1)
est store m1, title("Sex")
mlogit vote b1.election##ib1.generation, robust base(1)
est store m2, title("Generation")
mlogit vote b1.election##c.edu_linear, robust base(1)
est store m3, title("Education")
mlogit vote b1.election##i.francais, robust base(1)
est store m4, title("Language")
mlogit vote b1.election##ib0.partyid , base(1)
est store m5, title("Party ID")
mlogit vote b1.election##i.referendum, robust base(1)
est store m6, title("Independence")	

	
esttab ///
        m6   ///
			using "TableA1_qc2018.rtf", ///
			label mlabels(,titles) nogap  compress ///
			pr2  b(2) se(2) nonumbers replace  noomitted nobase 
	


					*********************************
					*    		REGRESSIONS			*
					*		    WITH WEIGHT			*
					*********************************	
	
	
						******* BLOC 1 ****** // ajout 10/07
					
					
* Sex

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib0.gender age_rscale age_rscale_sq edu_linear francais [pweight=weight_vote], robust base(1)

	foreach i in 1 2 3 4    {

	margins, dydx(gender) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	marginsplot, yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election")  ylabel(-0.8(0.2)0.8) saving(sexpw_`i'.gph, replace)	
			 
		 }  

	graph combine sexpw_1.gph sexpw_2.gph sexpw_3.gph sexpw_4.gph, ///
			  saving(SEXpw.png, replace)
			 
		graph export SEXpw.png,width(3200)  height(2400)  replace 

* Age 

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##c.age_rscale gender age_rscale_sq edu_linear francais [pweight=weight_vote], robust base(1)


	foreach i in 1 2 3 4    {

		
	margins, dydx(age_rscale) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election")  ylabel(-0.8(0.2)0.8) legend(off) saving(age_rscale_`i'pw.gph, replace) 	
			 
		 }  

	graph combine age_rscale_1pw.gph age_rscale_2pw.gph age_rscale_3pw.gph age_rscale_4pw.gph, ///
			saving(AGEpw.png, replace)
			 
	graph export AGEpw.png,width(3200)  height(2400)  replace

* Education		

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##c.edu_linear age_rscale gender age_rscale_sq francais [pweight=weight_vote], robust base(1)


	foreach i in 1 2 3 4    {

		
	margins, dydx(edu_linear) at(election=(1(1)5)) predict(outcome(`i')) mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(-0.8(0.2)0.8) legend(off) saving(education`i'pw.gph, replace) 
			 
		 }  

	graph combine education1pw.gph education2pw.gph education3pw.gph education4pw.gph , ///
			saving(EDUCATIONpw.png, replace)
			 
		graph export EDUCATIONpw.png,width(3200)  height(2400)  replace
		
					
* French 					
					
	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib0.francais edu_linear age_rscale gender age_rscale_sq [pweight=weight_vote], robust base(1)

	foreach i in 1 2 3 4    {

		
	margins, dydx(francais) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	marginsplot, yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(-0.8(0.2)0.8) legend(off) saving(francais_`i'pw.gph, replace)	
			 
		 }  

	graph combine francais_1pw.gph francais_2pw.gph francais_3pw.gph francais_4pw.gph , ///
			 saving(FRENCHpw.png, replace)
			 
	graph export FRENCHpw.png,width(3200)  height(2400)  replace
		
		
		
		
		******* BLOC 2 ****** 
		
		
		
*Independence

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##i.OUI gender edu_linear age_rscale age_rscale_sq francais partyid [pweight=weight_vote], robust base(1)

	foreach i in 1 2 3 4    {
		
	margins, dydx(OUI) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	marginsplot, yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election") ylabel(-0.8(0.2)0.8) legend(off) saving(ref_`i'pw.gph, replace)	
			 
		 }  

	graph combine ref_1pw.gph ref_2pw.gph ref_3pw.gph ref_4pw.gph, ///
			saving(sovereigntypw.png, replace)
			 
	graph export sovereigntypw.png, width(3200)  height(2400)  replace


*Party ID

	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib0.partyid gender edu_linear age_rscale age_rscale_sq francais OUI [pweight=weight_vote], base(1) iter(20)

	foreach i in 1 2 3 4    {
		
	margins, dydx(partyid) at(election=(1(1)5)) predict(outcome(`i'))  mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") legend(off) ///
			xtitle("Election") ylabel(-0.8(0.2)0.8)  saving(pid_`i'pw.gph, replace)	
			 
		 }  

	graph combine pid_1pw.gph pid_2pw.gph pid_3pw.gph pid_4pw.gph, ///
			saving(pidpw.png, replace)
			 
	graph export pidpw.png, width(3200)  height(2400)  replace
	
	
	
	
*Question wording - independence
gen wording=0
replace wording=1 if election==1 | election==2 	

eststo clear 

eststo m2007: logit OUI age gender edu_linear francais i.partyid  if election==1
eststo m2008: logit OUI age gender edu_linear francais  i.partyid if election==2
eststo m2012: logit OUI age gender edu_linear francais  i.partyid if election==3
eststo m2014: logit OUI age gender edu_linear francais  i.partyid if election==4
eststo m2018: logit OUI age gender edu_linear francais  i.partyid if election==5

esttab ///
        m*   ///
			using "TableAXXX_qc2018.rtf", ///
			label mlabels(,titles) nogap  compress ///
			pr2  b(2) se(2) nonumbers replace  noomitted nobase 
		
eststo Age: logit OUI  c.age##i.wording age age_2 gender edu_linear francais minority  income  
eststo Sex: logit OUI  i.gender##i.wording  age age_2 gender edu_linear francais minority  income 
eststo Education: logit OUI  c.edu_linear##i.wording age age_2 gender edu_linear francais minority  income 
eststo Language: logit OUI  i.francais##i.wording  age age_2 gender edu_linear francais minority  income 
eststo Minority: logit OUI  i.minority##i.wording  age age_2 gender edu_linear francais minority  income 
eststo Income: logit OUI  c.income##i.wording  age age_2 gender edu_linear francais minority  income 

esttab ///
        Age Sex Education Language Minority Income   ///
			using "TableAXXX_qc2018.rtf", ///
			label mlabels(,titles) nogap  compress ///
			pr2  b(2) se(2) nonumbers replace  noomitted nobase 
		
		
	* Eligible 
	
	
	eststo clear

	local _1 "PLQ"
	local _2 "PQ"
	local _3 "ADQ/CAQ"
	local _4 "QS"

	mlogit vote b1.election##ib3.eligible_generation gender edu_linear francais, robust base(1)


	foreach i in 1 2 3 4    {

		
	margins, dydx(eligible_generation) at(election=(1(1)5)) predict(outcome(`i')) mcompare(bonferroni) 
		
	mplotoffset, offset(0.25) yline(0) title(" ") recast(scatter)  ytitle(AME for `_`i'')  ///
			xlabel(1 "2007" 2"2008" 3"2012" 4"2014" 5"2018") ///
			xtitle("Election")  ylabel(-0.8(0.2)0.8) legend(off) saving(eligible_generation_`i'.gph, replace) 	
			 
		 }  

	graph combine eligible_generation_1.gph eligible_generation_2.gph eligible_generation_3.gph eligible_generation_4.gph, ///
			saving(GENERATION_eligible.png, replace)
			 
	graph export GENERATION_eligible.png,width(3200)  height(2400)  replace
	
	* Note : Baseline : Boomers. Circle: Milennials. Square: X. Diamond: Silent.
	
	

